﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace tema_pattern
{
    class Program
    {
        static void Main(string[] args)
        {
            string nume,marca,tip;
            int varsta;
            int optiune;
            int flag ;
            Client x = new Client(); ;                   
            ReprezentantaAuto fab = CarPool.Instance();

            Console.Write(" Autentificati-va cu numele dvs : ");
            nume = Console.ReadLine();
            Console.Write(" Aveti peste 18 ani ?? Introduceti varsta dvs: ");
            varsta = System.Convert.ToInt32(Console.ReadLine());
            Console.WriteLine();
            x = new Client(nume, varsta);

            while (true)
            {

                flag = 0;
                Console.WriteLine("**** Reprezentanta Auto ****");
                Console.WriteLine();
                Console.WriteLine("1.Achizitionati un automobil");
                Console.WriteLine("2.Afisati lista de automobile a clientului");
                Console.WriteLine("3.Afisati lista de automobile din showroom");
                optiune = System.Convert.ToInt32(Console.ReadLine());
                Console.WriteLine();

                if (optiune == 1)
                {
                    

                    while (flag == 0) //se repeta pana cand clientul isi gaseste masina dorita sau cand se razgandeste sa o mai cumpere
                    {

                        Console.Write(" Introduceti marca automobilului : ");
                        marca = Console.ReadLine();
                        Console.Write(" Introduceti tipul caroseriei (coupe|mini|sedan) : ");
                        tip = Console.ReadLine();


                        string raspuns;
                        Masina aux = new Mini();
                        aux = fab.get(marca); // intoarce autoturismul cautat dupa marca
                        if (aux.get_marca() != null)
                        {
                            if (aux.GetType().ToString().Split('.')[1].ToLower() == tip.ToLower())  // verificam daca tipul caroseriei coincide cu cel specificat de client
                            {
                                Console.WriteLine(" Doriti sa achizitionati aceasta masina (yes/no) ? ");
                                Console.WriteLine();
                                aux.print();
                                raspuns = Console.ReadLine();
                                if (raspuns == "yes")
                                {
                                    x.addCar(aux);    //adaug masina in lista de masini a clientului
                                    Console.WriteLine(" Masina a fost achizitionata cu succes");
                                    Console.WriteLine();
                                    flag = 1;
                                    fab.sterge(aux);  //stergem masina din reprezentanta
                                     
                                }
                                else
                                    flag = 1;
                            }


                            else
                            {
                                Console.WriteLine(" Avem la dispozitie doar urmatoarele modele de " + aux.get_marca());
                                Console.WriteLine();
                                Console.WriteLine("Marca\tCuloare\tTrans\tTip\tMotor\tLungime\tDotari");
                               
                                if (aux.get_marca().ToLower() == marca.ToLower())
                                    aux.print();
                                Console.WriteLine();
                            }

                        }
                        else
                        {
                            Console.WriteLine(" Nu exista aceasta marca de masina in showroom. Ne pare rau !");
                            fab.print();
                            Console.WriteLine();
                        }
                    }
                }
                if (optiune == 2) // afisare lista masini client
                {
                        x.print();
                    
                }
                if (optiune == 3)  //afisare lista masini reprezentanta
                {
                    fab.print();
                    Console.WriteLine();
                }
            }

            
        }
    }
}
